How to implement a `mint` function in your NFT contract?